perm filename MEMO.PUB[HAL,HE]4 blob
sn#132161 filedate 1974-11-25 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00007 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 .FIGS←TRUE
C00010 00003 .device xgp
C00011 00004 .NEXT PAGE
C00014 00005 .ADJUST COMPACT
C00015 00006 .REQUIRE "MINTRO.PUB" SOURCE_FILE <<MEMO25(2) Introduction>>
C00018 00007 .PORTION CONTENTS
C00022 ENDMK
C⊗;
.FIGS←TRUE;
.STD_SPREAD ← 1;
.<<PUB STATEMENTS>>
.TURN ON "∞π↑↓[]{_α#←→&∂";
.TURN OFF TAB;
.STD_PREFACE← 2*STD_SPREAD - 1;
.SPREAD ← STD_SPREAD ;
.PREFACE STD_PREFACE ;
.NOFILL; PREFACE SPREAD-1; FILL;
.MACRO UNFILL ⊂BEGIN NOFILL;TURN OFF "←→";PREFACE SPREAD-1;SKIP 2-SPREAD;GROUP⊃;
.MACRO MATRIX ⊂BEGIN NOFILL PREFACE 0 SKIP SPREAD GROUP⊃
.MACRO REFILL ⊂END; SKIP 2-SPREAD; CONTINUE⊃;
.MACRO MAYBREAK ⊂APART;GROUP;⊃;
.MACRO BULL ⊂ONCE; FLUSH LEFT⊃;
.MACRO REPART ⊂END; SKIP 2-SPREAD; APART⊃;
.MACRO COMT(X) ⊂BEGIN FILL;INDENT X,X;PREFACE 0;}%4{⊃
.COUNT SECTION FROM 1 TO 99 PRINTING ⊂SECTION⊃;
.COUNT SUBSEC FROM 0 TO 99 IN SECTION PRINTING "!.1";
.COUNT SUBSUBSEC FROM 0 TO 99 IN SUBSEC PRINTING "!.1";
.COUNT FOOTNOTE INLINE FROM 1 TO 9 IN PAGE;
.MACRO NEWSEC(TITLE,ID) ⊂
.NEXT SECTION!;
.IF PICLIN≠NULL THEN ALLPIC;
.SECNAME←NULL;
.SSECNAME←NULL;
.SSSNUM←NULL
.NEXT SUBSEC;FIGURE←0;TABLE←0;
.SECNAME←"TITLE";
.SSECNAME←"ID";
.SKIP TO COLUMN 1; BEGIN CENTER;
%5{SECID} {SECTION!}%*
%6{SECNAME}%*
.END
.SEND CONTENTS ⊂IF LINES<3*SPREAD+1 THEN
.BEGIN
.NEXT PAGE
{SECID}→PAGE
.END
{SECTION!} TITLE →{PAGE!}
.⊃
.SECNAME←"TITLE";⊃
.MACRO NEWSS(TITLE,ID,LAB) ⊂
.NEXT SUBSEC!;
.IF PICLIN≠NULL THEN ALLPIC;
.SSSNUM←SUBSEC!
.NEXT SUBSUBSEC;
.IF LINES≤10*SPREAD THEN NEXT PAGE ELSE SKIP 4*SPREAD;
.SSECNAME←"ID";
.IF SSECNAME=NULL THEN SSECNAME←"TITLE";
%5{SUBSEC!} TITLE%*
.SEND CONTENTS ⊂IF LINES<3*SPREAD+1 THEN
.BEGIN
.NEXT PAGE
{SECID}→PAGE
.END
{SUBSEC!} TITLE →{PAGE!}
.⊃
.⊃
.MACRO NEWSSS(TITLE,LAB) ⊂
.NEXT SUBSUBSEC!;
.IF PICLIN≠NULL THEN ALLPIC;
.SSSNUM←SUBSUBSEC!
.IF LINES≤8*SPREAD THEN NEXT PAGE ELSE SKIP 2*SPREAD;
%4{SUBSUBSEC!} TITLE%*
.BREAK
.SEND CONTENTS ⊂IF LINES<3*SPREAD+1 THEN
.BEGIN
.NEXT PAGE
{SECID}→PAGE
.END
{SUBSUBSEC!} TITLE →{PAGE!}
.⊃
.⊃
.COUNT EQUATION INLINE IN SECTION PRINTING "!.1"
.MACRO NEWEQ⊂
.NEXT EQUATION!;TURN ON "→";"→[Eq. ";EQUATION!;"]";TURN OFF "→";⊃
.MACRO EQREF(LBL)⊂"Equation ";EQUATION! LBL⊃
.MACRO SECREF(LBL)⊂"Chapter ";SECTION! LBL⊃
.MACRO SSREF(LBL)⊂"Section ";SUBSEC! LBL ⊃
.MACRO SSSREF(LBL)⊂"subsection ";SUBSUBSEC! LBL⊃
.MACRO APREF(LBL)⊂"Appendix ";SECTION! LBL⊃
.MACRO FIGREF(LBL)⊂"Figure ";FIGURE LBL⊃
.MACRO TABREF(LBL)⊂"Table "; LBL⊃
.AT NULL ⊂IF FILLING THEN
. START BREAK;
. IF LINES<2*SPREAD+1 THEN NEXT PAGE END
. ELSE SKIP SPREAD⊃;
.RECURSIVE MACRO STOREPIC(TITLE,LINES,TEMP) ⊂START
.PICLIN←PICLIN&" "[1 TO 2-LENGTH("LINES")]&"LINES";
.PICNUM←PICNUM&" "[1 TO 4-LENGTH(TEMP)]&TEMP;
.PICTLEN←PICTLEN&" "[1 TO 2-LENGTH(LENGTH("TITLE"))]&LENGTH("TITLE");
.PICTIT←PICTIT&"TITLE";
.END⊃
.MACRO NEWFIG(TITLE,εLINES,LABEL) ⊂
.FIGURE←FIGURE+1; LABEL TEMP←SECTION&"."&FIGURE; }Figure {TEMP;
.STOREPIC(|TITLE|,LINES,TEMP) ⊃;
.MACRO MAKEFIG(TITLE,εLINES,LABEL) ⊂
.FIGURE←FIGURE+1;LABEL TEMP←SECTION&"."&FIGURE;
.STOREPIC(|TITLE|,LINES,TEMP) ⊃;
.PICLIN←PICNUM←PICTLEN←PICTIT←NULL
.MACRO SMALLPIC⊂⊃
.MACRO ALLPIC⊂⊃
.MACRO NEWTABLE(TITLE,LABEL)⊂
.TABLE←TABLE+1; LABEL TEMP←SECTION&"."&TABLE;
.BEGIN NOFILL CENTER GROUP
Table {TEMP}
TITLE
.⊃;
.IF FIGS THEN START
.MACRO PLACEPIC ⊂BEGIN CENTER PREFACE SPREAD-1
.A←PICLIN[1 TO 2]; B←PICNUM[1 TO 4];
.C←PICTLEN[1 TO 2]; D←PICTIT[1 TO C];
.PICLIN←PICLIN[3 TO ∞]; PICNUM←PICNUM[5 TO ∞];
.PICTLEN←PICTLEN[3 TO ∞]; PICTIT←PICTIT[C+1 TO ∞];
.GROUP SKIP A;
Figure {B}
{D}
.SKIP 2*SPREAD;
.END⊃
.RECURSIVE MACRO RSPIC ⊂
.IF LINES-3*SPREAD≥PICLIN[1 TO 2] THEN PLACEPIC
.ELSE START
. TLIN←TLIN&PICLIN[1 TO 2]; PICLIN←PICLIN[3 TO ∞];
. TNUM←TNUM&PICNUM[1 TO 4]; PICNUM←PICNUM[5 TO ∞];
. C←PICTLEN[1 TO 2];
. TTLEN←TTLEN&C; PICTLEN←PICTLEN[3 TO ∞];
. TTIT←TTIT&PICTIT[1 TO C]; PICTIT←PICTIT[C+1 TO ∞];
. END;
.IF PICLIN≠NULL THEN RSPIC⊃
.RECURSIVE MACRO SMALLPIC ⊂
.TLIN←TNUM←TTLEN←TTIT←NULL;
.RSPIC;
.PICLIN←TLIN; PICNUM←TNUM; PICTLEN←TTLEN; PICTIT←TTIT;
.IF LINES<2*SPREAD-1 THEN NEXT PAGE ⊃
.RECURSIVE MACRO ALLPIC ⊂
.IF PICLIN≠NULL THEN SMALLPIC;;
.IF PICLIN≠NULL THEN BEGIN PLACEPIC; ALLPIC END ⊃
.AT NULL ⊂IF FILLING THEN
. START BREAK;
. IF PICLIN≠NULL THEN SMALLPIC;
. IF LINES<2*SPREAD+1 THEN NEXT PAGE END
. ELSE SKIP SPREAD⊃;
.BEFORE PAGE ⊂STANDARD TITLES;
. IF PICLIN≠NULL THEN SMALLPIC ⊃
.END COMMENT PICTURE MACROS;
.BOTTOM←50;
.MACRO FULL⊂BOTTOM-3*SPREAD⊃
.MACRO HALF⊂BOTTOM/2-3*SPREAD⊃
.MACRO THIRD⊂BOTTOM/3-3*SPREAD⊃
.SECNAME←NULL
.device xgp
.IF XCRIBL THEN FONT 1 "BASL30[HAL,HE]"
.IF XCRIBL THEN FONT 4 "BASI30[HAL,HE]"
.IF XCRIBL THEN FONT 5 "BASB30"
.IF XCRIBL THEN FONT 6 "BDR40"
.IF XCRIBL THEN FONT 7 "LPT"
.IF XCRIBL THEN START
.!xgplftmar← 200
.END
.PAGE FRAME 53 HIGH 80 WIDE;
.TITLE AREA HEADING LINES 1 TO 4 CHARS 1 TO 80;
.AREA TEXT LINES 5 TO 53 CHARS 1 TO 80;
.TURN ON "%\"
.TABS 17
.SECID←"CHAPTER";
.SECNAME←NULL
.COUNT PAGE FROM 1 TO 999 PRINTING ⊂PAGE⊃;
.IF XCRIBL THEN SELECT 1
.NEXT PAGE
.SSECNAME←NULL;
.PORTION TITLEPAGE
.BEGIN NOFILL;turn on "↑";
.AREA TEXT LINES 1 TO 53 CHARS 1 TO 80
.NEXT PAGE
.GROUP SKIP 1
%1STANFORD ARTIFICIAL INTELLIGENCE LABORATORY →NOVEMBER 1974
MEMO AIM-243
.GROUP SKIP 2
COMPUTER SCIENCE DEPARTMENT
REPORT CS-456
.GROUP SKIP 4
.NOFILL CENTER
%6'AL, A Programming System for Automation
.GROUP SKIP 4
%1Raphael Finkel, Russell Taylor, Robert Bolles, Richard Paul, Jerome Feldman↑*
.GROUP SKIP 5
.FILL ADJUST COMPACT
.NARROW 8,8
'AL, a new language for specification of manipulatory actions, is
described. It is the most recent in a series of efforts in this direction,
a series including,
in particular, APT and WAVE. The 'AL system includes a source language with
advanced features for describing individual motions of manipulators and
complex series of motions making up an entire assembly, and the runtime
system necessary for execution of programs.
.WIDEN
.NOFILL SKIP TO LINE 37
.FILL
∞_→#
.BREAK
%4↑* Jerome Feldman is now at the University of Rochester.
This research was supported in part by the
National Science Foundation under contract No. GIα-42906 and in part by
the Advanced Research
Projects Agency of the Office of Defense under Contract No. DAHC-15-73-C-0435.
The views and conclusions in this document are those of the authors and
should not be interpreted as necessarily representing the official policies,
either expressed or implied, of the
funding agencies.
Reproduced in the USA. Available from the National Technical Information
Service, Springfield, Virginia 22151.%*
.END
.ADJUST COMPACT
.SECNAME←NULL
.SSECNAME←NULL
.SSSNUM←NULL
.INSERT CONTENTS
.PORTION BODY;
.COUNT PAGE FROM 1 TO 999 PRINTING ⊂PAGE⊃;
.EVEN HEADING(Page {PAGE!},{SSECNAME},{SSSNUM});
.ODD HEADING({SSSNUM},{SSECNAME},Page {PAGE!});
.NEXT PAGE
.REQUIRE "MINTRO.PUB" SOURCE_FILE; <<MEMO25(2) Introduction>>
.REQUIRE "MGOALS.PUB" SOURCE_FILE; <<MEMO25(3:6) Goals>>
.REQUIRE "MSYSOL.PUB" SOURCE_FILE; <<MEMO25(7),61(2) System outline>>
.REQUIRE "MUSER.PUB" SOURCE_FILE; <<MEMO8(2) User features>>
.REQUIRE "MDATST.PUB" SOURCE_FILE; <<MEMO61(8:11) Data structures>>
.REQUIRE "MMOTNS.PUB" SOURCE_FILE; <<MEMO61(12:17) Motion specs>>
.REQUIRE "MGRAPH.PUB" SOURCE_FILE; <<graph structures (subsection) >>
.REQUIRE "MCTRST.PUB" SOURCE_FILE; <<MEMO61(3:7) Control structures>>
.REQUIRE "MCTCST.PUB" SOURCE_FILE; <<MEMO61(18,19),63(2:7) Compile time constructs>>
.REQUIRE "MLIBRT.PUB" SOURCE_FILE; <<MEMO63(8) Library routines>>
.REQUIRE "MVHL.PUB" SOURCE_FILE; <<MEMO64 Very high level>>
.REQUIRE "MRUNTM.PUB" SOURCE_FILE; <<MEMO7 Runtime overview>>
.REQUIRE "MEXTEN.PUB" SOURCE_FILE; <<MEMO9 Extensions>>
.REQUIRE "MBIB.PUB" SOURCE_FILE; <<MEMO10 Bibliography>>
.PORTION APPENDIX
.SECID←"APPENDIX";
.SEND CONTENTS ⊂
APPENDICES
.⊃
.COUNT SECTION FROM 1 TO 99 PRINTING "I";
.COUNT SUBSEC FROM 0 TO 9 IN SECTION PRINTING "!.1";
.COUNT SUBSUBSEC FROM 0 TO 99 IN SUBSEC PRINTING "!.1";
.REQUIRE "MDIALG.PUB" SOURCE_FILE; <<MEMO8(3) Dialog>>
.REQUIRE "MXMPLS.PUB" SOURCE_FILE; <<XMPLES Examples: appendix>>
.REQUIRE "MRTAPP.PUB" SOURCE_FILE; <<RUNTIM Runtime details: appendix>>
.PORTION CONTENTS
.COUNT PAGE FROM 2 PRINTING "i";
.SSECNAME←"FOREWORD";
.SSSNUM ← NULL;
.SECNAME←"FOREWORD";
.NEXT PAGE
This document describes the new hand language, 'AL. It is
not intended to be a final language specification or a user's manual.
Rather, it is a working document presenting a number of related
ideas concerning a system for programmable automation. These ideas
cover a broad range of topics: arm servoing, parallel processing,
assembly world modelling, strategists, and language design. We have
tried to combine these into a coherent system. However, as you read
this document you will notice that some topics have been explored
more than others, some explanations contain more detail than others,
and some questions are left unanswered. Various portions of the
system have already been implemented.
Interested persons unfamiliar with the background for this work
will find it useful to read %4The Use of Sensory Feedback in a
Programmable Assembly System%* [Bolles and Paul].
We would like to thank those people who have made
numerous suggestions and have helped implement various parts of the
system.
In particular, we would to thank Bertrand Meyer, who
implemented the scanner and parser, Botond Eross, who is
implementing the PDP11 runtime monitor,
Bruce Baumgart, who assisted with the illustrations,
and Larry Tesler, whose document preparation program PUB was used
to prepare this paper.
We also wish to thank D. Whitney, J. Nevins, and D. Killoran of
Draper Labs and W. Park of Stanford Research Institute for their
helpful criticisms and suggestions.
During the period in which the work reported here was performed,
Russ Taylor was supported in part by a grant from the Alcoa Foundation,
Raphael Finkel was supported by a NSF fellowship, and Robert Bolles
was supported in part by the Hertz Foundation. We would like to
thank all these agencies for their kind assistance.
The English language has no genderless personal pronoun; without
any implication of sexism we use arbitrary forms in its place.
.SSECNAME←"TABLE OF CONTENTS";
.SECNAME←"TABLE OF CONTENTS";
.NEXT PAGE
.INDENT 0
.NOFILL
.TURN ON "∞→"
CHAPTER →PAGE
.RECEIVE